代码执行 vs 工具编排
让模型写代码在沙箱串调工具,可节省最高 98.7% token,适合数据量大、控制流确定的场景
核心要点:
- 工具编排让中间结果全过上下文,费 token、累延迟
- 代码执行让模型写代码在沙箱串调,只回最终结果
- 实测 token 节省最高 98.7%
- subagent-as-tool:子 agent 当工具,隔离上下文
- 边界:数据量大、控制流确定用代码执行
本文讲一种改变工具调用方式的方案。它建立在 03-MCP-协议 之上,沙箱安全细节见 07-安全与沙箱。
逐个调工具有什么问题?
核心问题:让 agent 一个接一个调工具完成任务,瓶颈在哪?
标准工具编排把所有中间结果写回上下文,数据量大时迅速耗尽配额,且每次调用都需一轮模型推理[1]。三个成本叠加:
- 中间结果污染上下文:A 工具的大输出要进上下文才能喂给 B 工具,即便模型并不需要看它。
- 延迟线性累积:每个工具调用是一次模型往返,串调 N 个工具就是 N 轮。
- schema 常驻:所有工具定义要预先注入(见 04-工具发现与延迟加载)。
这解释了为什么大数据量的多工具工作流在直接调用下既慢又贵。
代码执行怎么解决?
核心问题:能不能让模型写一段代码,把串调逻辑一次跑完?
让模型生成代码在沙箱执行,用代码完成循环/过滤/组合调用,只把最终结果返回上下文[1]。Anthropic 的方案是把 MCP 工具暴露为代码 API(如 TypeScript 文件),agent 按需读取并生成调用代码。
效果由一组实测数据印证:同一个 Google Drive → Salesforce 工作流,直接工具调用耗 150,000 token,代码执行仅 2,000 token,节省 98.7%[1]。社区实测进一步显示,数据量大时代码执行在成功率上明显优于直接调用(社区讨论数据,样本有限,未给可复核的精确数字)。
关键机制是中间数据不过模型:代码在沙箱里处理几千条记录,模型只看到最终的少量结果。
subagent-as-tool 是什么?
核心问题:如果子任务本身需要多轮推理,代码执行不够用怎么办?
把子 agent 当作工具调用——子 agent 在独立上下文里完成任务,只回传结论[2]。当子任务需要 agent 级推理(而非确定性代码)时,这是代码执行之外的隔离手段。
价值在于上下文隔离:子 agent 的所有中间工具调用都不污染父 agent 的上下文,且多个子 agent 可并行。这与多 agent 编排相关,但角度不同——这里只把它当"一个会推理的工具"用,编排拓扑见 04-编排与工作流。
什么时候用代码执行,什么时候直接调工具?
核心问题:代码执行这么省,是不是该全用它?
不是——代码执行适合控制流确定、数据量大、敏感数据不该过模型的场景;单次调用或模型需要理解工具响应内容时,直接调用更合适[1]。
| 场景 | 选择 |
|---|---|
| 控制流确定、数据量大 | 代码执行 |
| 敏感数据不该进模型上下文 | 代码执行 |
| 单次工具调用 | 直接调用 |
| 模型需要读懂工具返回再决策 | 直接调用 |
| 动态 MCP server、带引导指令的返回 | 直接调用 |
@tbl-agent-tool-code-vs-direct 代码执行与直接工具调用的场景选择:按控制流确定性、数据量、敏感性、是否需要模型读懂返回值判断
代码执行的主要代价是安全:它引入了一批新攻击面(一项 MCP 设计研究识别出 16 类)[3],必须配沙箱(见 07-安全与沙箱)。可借鉴的判断:数据多、流程定,就让模型写代码;一锤子买卖或要看懂返回,就直接调。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 工具编排问题 | 中间结果过上下文、延迟线性累积、schema 常驻 |
| 代码执行 | 模型写代码沙箱串调,只回最终结果,token 省最高 98.7% |
| 中间数据不过模型 | 沙箱处理大数据,模型只看少量结果 |
| subagent-as-tool | 子 agent 当工具,隔离上下文 + 并行 |
| 适用边界 | 数据大/流程定→代码;单次/要读返回→直接调;代码执行需沙箱 |
参考资料
- Anthropic. Code execution with MCP: Building more efficient agents. 2025. https://www.anthropic.com/engineering/code-execution-with-mcp
- Claude Agent SDK. Subagents in the SDK. 2025. https://code.claude.com/docs/en/agent-sdk/subagents
- From Tool Orchestration to Code Execution: A Study of MCP Design Choices. arXiv:2602.15945, 2026. https://arxiv.org/abs/2602.15945
延伸阅读
- Simon Willison. Code execution with MCP commentary. 2025. https://simonwillison.net/2025/Nov/4/code-execution-with-mcp/